package com.zb.hms.data.base.dao.inter;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
/**
 * 
 * 与数据库交互基础方法
 * 新版本的说明，多个新版本依次换行说明
 * @author zb
 * @date : 2017年8月18日 下午1:52:14
 * @version V1.0
 * @since JDK 1.8
 */
@SuppressWarnings(value={"rawtypes"})
public interface BaseDaoInter<T> {
			/**
			 * 
			 * 保存一个对象
			 * 多版本请换行描述
			 * @param t void
			 * @author : zb
			 * @date : 2017年8月18日 下午1:54:22
			 * @version V1.0		
			 */
			void save(T t);
			/**
			 * 
			 * 保存一个对象集合
			 * 多版本请换行描述
			 * @param ts void
			 * @author : zb
			 * @date : 2017年8月18日 下午2:31:44
			 * @version V1.0
			 */
			void saveList(List<T> ts);
			/**
			 * 
			 * 删除一个对象
			 * 多版本请换行描述
			 * @param ts void
			 * @author : zb
			 * @date : 2017年8月18日 下午2:31:44
			 * @version V1.0
			 */
			void delete(T t);
			/**
			 * 
			 * 删除一个对象集合
			 * 多版本请换行描述
			 * @param ts void
			 * @author : zb
			 * @date : 2017年8月18日 下午2:31:44
			 * @version V1.0
			 */
			void deleteList(List<T> ts);
			/**
			 * 
			 * 修改一个对象
			 * 多版本请换行描述
			 * @param ts void
			 * @author : zb
			 * @date : 2017年8月18日 下午2:31:44
			 * @version V1.0
			 */
			void update (T t);
			/**
			 * 
			 * 修改一个对象集合
			 * 多版本请换行描述
			 * @param ts void
			 * @author : zb
			 * @date : 2017年8月18日 下午2:31:44
			 * @version V1.0
			 */
			void updateList(List<T> ts);
		    /**
		     * 
		     * 根据Hql及参数查询
		     * 多版本请换行描述
		     * @param Hql
		     * @param params
		     * @return List
		     * @author : zb
		     * @date : 2017年8月23日 下午12:42:31
		     * @version V1.0
		     */
			List findHql(String Hql,Map<String,Object> params);	
			/**
			 * 
			 * 根据ID查询
			 * 多版本请换行描述
			 * @param clazz
			 * @param id
			 * @return T
			 * @author : zb
			 * @date : 2017年8月23日 下午12:39:52
			 * @version V1.0
			 */
			T findId(Class<T> clazz,Serializable id);		
			/**
			 * QBC hibernate查询
			 * 方法描述<br/>
			 * 多版本请换行描述
			 * @param clazz
			 * @param criterias
			 * @param orders
			 * @return List<T>
			 * @author : zb
			 * @date : 2017年8月23日 下午12:50:50
			 * @version V1.0
			 */
			List<T> findCriteria(Class<T> clazz,List<Criterion> criterions,List<Order> orders);
			/**
			 * 
			 * 根据sql查询
			 * 多版本请换行描述
			 * @param sql
			 * @return List<T>
			 * @author : zb
			 * @date : 2017年8月23日 下午1:10:02
			 * @version V1.0
			 */
			List<T> findSql(String sql,Map<String,Object> params);
}
